package edu.algo3.algoThief.vista;

import java.awt.event.ActionEvent;

import edu.algo3.algoThief.domain.Juego;
import edu.algo3.algoThief.domain.Pista;
import edu.algo3.algoThief.domain.Tiempo;
import edu.algo3.algoThief.util.Constants;

@SuppressWarnings("serial")
public class VentanaCiudadActual extends javax.swing.JFrame {

	private VentanaOrdenDeArresto ventanaOrdenDeArresto;
	private javax.swing.JLabel botonIrALaBiblioteca;
    private javax.swing.JLabel botonIrAlAeropuerto;
    private javax.swing.JLabel botonIrAlBanco;
    private javax.swing.JLabel botonOrdenDeArresto;
    private javax.swing.JButton botonSalir;
    private javax.swing.JLabel botonViajar;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel labelAgenteACargo;
    private javax.swing.JLabel labelAgenteACargotitulo;
    private javax.swing.JLabel labelCiudadActual;
    private javax.swing.JLabel labelCiudadActualTitulo;
    private javax.swing.JLabel labelHoraActual;
    private javax.swing.JLabel labelHoraTitulo;
    private javax.swing.JTextPane textAreaDescripcionDeLaCiudad;
    private javax.swing.JButton botonGuardarJuego;
    
    
    public VentanaCiudadActual() {
        initComponents();
        actualizarDatosCiudad();
    }

    
    
    
    
 
    private void initComponents() {

    	
        labelCiudadActual = new javax.swing.JLabel();
        labelCiudadActualTitulo = new javax.swing.JLabel();
        labelHoraTitulo = new javax.swing.JLabel();
        labelHoraActual = new javax.swing.JLabel();
        labelAgenteACargotitulo = new javax.swing.JLabel();
        labelAgenteACargo = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        textAreaDescripcionDeLaCiudad = new javax.swing.JTextPane();
        botonIrAlBanco = new javax.swing.JLabel();
        botonIrAlAeropuerto = new javax.swing.JLabel();
        botonIrALaBiblioteca = new javax.swing.JLabel();
        botonOrdenDeArresto = new javax.swing.JLabel();
        botonViajar = new javax.swing.JLabel();
        botonSalir = new javax.swing.JButton();
        botonGuardarJuego = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        labelCiudadActual.setFont(new java.awt.Font("Times New Roman", 0, 18)); // NOI18N
        labelCiudadActual.setForeground(new java.awt.Color(153, 0, 0));
        labelCiudadActual.setText(Constants.CIUDAD_ACTUAL_PLANTILLA);

        labelCiudadActualTitulo.setFont(new java.awt.Font("Times New Roman", 0, 18)); // NOI18N
        labelCiudadActualTitulo.setText(Constants.CIUDAD_ACTUAL);

        labelHoraTitulo.setText(Constants.DIA_Y_HORA_ACTUAL);

        labelHoraActual.setText(Constants.DIA_Y_HORA_ACTUAL_PLANTILLA);

        labelAgenteACargotitulo.setText(Constants.AGENTE_A_CARGO);

        labelAgenteACargo.setText(Constants.NOMBRE_POLICIA_PLANTILLA);

        textAreaDescripcionDeLaCiudad.setBackground(new java.awt.Color(204, 204, 204));
        textAreaDescripcionDeLaCiudad.setText(Constants.DESCRIPCION_DEL_LUGAR_PLANTILLA);
        jScrollPane1.setViewportView(textAreaDescripcionDeLaCiudad);

        botonIrAlBanco.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        botonIrAlBanco.setForeground(new java.awt.Color(0, 51, 102));
        botonIrAlBanco.setText("Ir al banco");
        botonIrAlBanco.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonIrAlBanco.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonIrAlBancoMouseClicked(evt);
            }
        });

        botonIrAlAeropuerto.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        botonIrAlAeropuerto.setForeground(new java.awt.Color(0, 51, 102));
        botonIrAlAeropuerto.setText(Constants.IR_AL_AEROPUERTO);
        botonIrAlAeropuerto.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonIrAlAeropuerto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonIrAlAeropuertoMouseClicked(evt);
            }
        });

        botonIrALaBiblioteca.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        botonIrALaBiblioteca.setForeground(new java.awt.Color(0, 51, 102));
        botonIrALaBiblioteca.setText(Constants.IR_A_BIBLIOTECA);
        botonIrALaBiblioteca.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonIrALaBiblioteca.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonIrALaBibliotecaMouseClicked(evt);
            }
        });

        botonOrdenDeArresto.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        botonOrdenDeArresto.setForeground(new java.awt.Color(0, 153, 0));
        botonOrdenDeArresto.setText(Constants.ORDEN_DE_ARRESTO);
        botonOrdenDeArresto.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonOrdenDeArresto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonOrdenDeArrestoMouseClicked(evt);
            }
        });

        botonViajar.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        botonViajar.setForeground(new java.awt.Color(0, 153, 0));
        botonViajar.setText(Constants.VIAJAR);
        botonViajar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        botonViajar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonViajarMouseClicked(evt);
            }
        });

        botonSalir.setBackground(new java.awt.Color(139, 27, 27));
        botonSalir.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        botonSalir.setForeground(new java.awt.Color(255, 255, 255));
        botonSalir.setText(Constants.SALIR_DE_VENTANA);
        botonSalir.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonSalirMouseClicked(evt);
            }
        });
        botonSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonSalirActionPerformed(evt);
            }
        });
        
        //ADDED GUARDAR
        botonGuardarJuego.setBackground(new java.awt.Color(139, 27, 27));
        botonGuardarJuego.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        botonGuardarJuego.setForeground(new java.awt.Color(255, 255, 255));
        botonGuardarJuego.setText(Constants.GUARDAR);
        botonGuardarJuego.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonGuardarJuegoActionPerformed(evt);
            }
        });
        // ------------------------------------------------------------------

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(labelHoraTitulo)
                .addGap(11, 11, 11)
                .addComponent(labelHoraActual, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(labelAgenteACargotitulo)
                .addGap(12, 12, 12)
                .addComponent(labelAgenteACargo, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(labelCiudadActualTitulo)
                .addGap(9, 9, 9)
                .addComponent(labelCiudadActual, javax.swing.GroupLayout.PREFERRED_SIZE, 310, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 409, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(botonIrAlBanco, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(174, 174, 174)
                .addComponent(botonOrdenDeArresto, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(botonIrALaBiblioteca, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(220, 220, 220)
                .addComponent(botonViajar, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addComponent(botonIrAlAeropuerto, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGroup(layout.createSequentialGroup()
                .addGap(380, 380, 380)
                .addComponent(botonSalir))
            .addGroup(layout.createSequentialGroup()
                .addGap(380, 380, 380)
                .addComponent(botonGuardarJuego))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelHoraTitulo)
                    .addComponent(labelHoraActual))
                .addGap(6, 6, 6)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelAgenteACargotitulo)
                    .addComponent(labelAgenteACargo))
                .addGap(16, 16, 16)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelCiudadActualTitulo)
                    .addComponent(labelCiudadActual))
                .addGap(8, 8, 8)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(25, 25, 25)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(botonIrAlBanco))
                    .addComponent(botonOrdenDeArresto))
                .addGap(3, 3, 3)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(botonIrALaBiblioteca))
                    .addComponent(botonViajar, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(13, 13, 13)
                .addComponent(botonIrAlAeropuerto)
                .addGap(23, 23, 23)
                .addComponent(botonSalir, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(13, 13, 13)
                .addComponent(botonGuardarJuego, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>       
    
    

    public void actualizarHoraActual() {

        this.labelHoraActual.setText(Tiempo.getDiaYHora());
    }
    
    public void actualizarDatosCiudad() {

        this.actualizarHoraActual();
        this.labelCiudadActual.setText(Juego.getInstance().getJugador()
            .getCiudadActual().getNombre());
        this.labelAgenteACargo.setText(Juego.getInstance().getNombreJugador());
        this.textAreaDescripcionDeLaCiudad.setText(Juego.getInstance()
            .getJugador().getCiudadActual().getDescripcion());

    }
    
    
    protected void botonGuardarJuegoActionPerformed(ActionEvent evt) {

        Juego.getInstance().guardarPartida();
        new PanelMensajeJuegoGuardado(Constants.JUEGO_GUARDADO_CON_EXITO);
    }
    
    private void botonSalirActionPerformed(java.awt.event.ActionEvent evt) {                                           
    	System.exit(0);
    }                                          

    private void botonIrAlBancoMouseClicked(java.awt.event.MouseEvent evt) {                                            
    	String mensajePista;
        Juego.getInstance().getJugador()
            .entrarAEdificio(Constants.DESCRIPCION_EIDIFICIO_BANCO);
        if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
            new PanelJuegoTerminado(this, Constants.JUEGO_TERMINADO, Constants.SE_HA_ACABADO_EL_TIEMPO);
        } else {
            if (Juego.getInstance().getJugador().estaEnCiudadIncorrecta()) {
                mensajePista = Constants.NO_SE_HA_VISTO_AL_SOSPECHOSO;
            } else {
                Pista pista = Juego.getInstance().getJugador().getPistaActual();
                mensajePista = pista.getPista();
            }
            VentanaBanco ventanaBanco = new VentanaBanco(this, mensajePista);
            ventanaBanco.setVisible(Boolean.TRUE);
        }
    }    
    
    

    private void botonIrAlAeropuertoMouseClicked(java.awt.event.MouseEvent evt) {                                                 
    	String mensajePista;
        Juego.getInstance().getJugador()
            .entrarAEdificio(Constants.DESCRIPCION_EIDIFICIO_AEROPUERTO);
        if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
            new PanelJuegoTerminado(this, Constants.JUEGO_TERMINADO, Constants.SE_HA_ACABADO_EL_TIEMPO);
        } else {
            if (Juego.getInstance().getJugador().estaEnCiudadIncorrecta()) {
                mensajePista = Constants.NO_SE_HA_VISTO_AL_SOSPECHOSO;
            } else {
                Pista pista = Juego.getInstance().getJugador().getPistaActual();
                mensajePista = pista.getPista();
            }
            VentanaAeropuerto ventanaAeropuerto =
                new VentanaAeropuerto(this, mensajePista);
            ventanaAeropuerto.setVisible(Boolean.TRUE);
        }
    }                                                

    
    private void botonIrALaBibliotecaMouseClicked(java.awt.event.MouseEvent evt) {                                                  
    	String mensajePista;
        Juego.getInstance().getJugador()
            .entrarAEdificio(Constants.DESCRIPCION_EIDIFICIO_BIBLIOTECA);
        if (Juego.getInstance().getCondicionDeTriunfo().haPerdido()){
            new PanelJuegoTerminado(this, Constants.JUEGO_TERMINADO, Constants.SE_HA_ACABADO_EL_TIEMPO);
        } else {
            if (Juego.getInstance().getJugador().estaEnCiudadIncorrecta()) {
                mensajePista = Constants.NO_SE_HA_VISTO_AL_SOSPECHOSO;
            } else {
                Pista pista = Juego.getInstance().getJugador().getPistaActual();
                mensajePista = pista.getPista();
            }
            VentanaBiblioteca ventanaBiblioteca =
                new VentanaBiblioteca(this, mensajePista);
            ventanaBiblioteca.setVisible(Boolean.TRUE);
        }
    }                                                 

    
    private void botonOrdenDeArrestoMouseClicked(java.awt.event.MouseEvent evt) {                                                 
    	if (ventanaOrdenDeArresto == null){
            this.ventanaOrdenDeArresto = new VentanaOrdenDeArresto(this);
        }
        this.ventanaOrdenDeArresto.setVisible(Boolean.TRUE);
    }                                                

    
    private void botonViajarMouseClicked(java.awt.event.MouseEvent evt) {                                         
    	VentanaViajes VentanaViajes = new VentanaViajes(this);
        VentanaViajes.setVisible(Boolean.TRUE);
    }                                        

    private void botonSalirMouseClicked(java.awt.event.MouseEvent evt) {                                        
    	System.exit(0);
    }                                       

   
                 
    
     
}
